package com.campus.counseling.scoring;

import java.util.Map;

/**
 * 评分引擎接口
 * 定义了评分系统的核心功能
 */
public interface ScoringEngine {
    
    /**
     * 计算维度得分
     * @param testId 测试ID
     * @param answers 答案（问题ID -> 答案值）
     * @return 维度得分（维度 -> 得分）
     */
    Map<String, Double> calculateDimensionScores(Long testId, Map<Long, String> answers);
    
    /**
     * 计算总分
     * @param dimensionScores 维度得分
     * @return 总分
     */
    Double calculateTotalScore(Map<String, Double> dimensionScores);
    
    /**
     * 获取评分规则类型
     * @return 评分规则类型
     */
    String getScoringType();
    
    /**
     * 验证答案格式
     * @param answer 答案值
     * @return 是否有效
     */
    boolean validateAnswer(String answer);
    
    /**
     * 标准化得分
     * @param rawScore 原始得分
     * @param maxScore 最高分
     * @param minScore 最低分
     * @return 标准化后的得分
     */
    default Double normalizeScore(Double rawScore, Double maxScore, Double minScore) {
        if (rawScore == null || maxScore == null || minScore == null) {
            return 0.0;
        }
        if (maxScore.equals(minScore)) {
            return rawScore;
        }
        return (rawScore - minScore) / (maxScore - minScore) * 100;
    }
} 